import { Module } from '@nestjs/common'
import { RouterModule } from '@nestjs/core'

import { AuthModule } from './auth'
import { CurrentUserModule } from './current-user'
import {
  CacheModule,
  LoginLogModule,
  OnlineModule,
  OperLogModule
} from './monitor'
import {
  ConfigModule,
  DeptModule,
  DictDataModule,
  DictTypeModule,
  MenuModule,
  PostModule,
  RoleModule,
  UserModule
} from './system'

@Module({
  imports: [
    //#region 鉴权相关
    AuthModule,
    //#endregion
    //#region 当前用户相关
    CurrentUserModule,
    //#endregion
    //#region 监控相关
    CacheModule,
    LoginLogModule,
    OnlineModule,
    OperLogModule,
    //#endregion
    //#region 系统相关
    ConfigModule,
    DeptModule,
    DictDataModule,
    DictTypeModule,
    MenuModule,
    PostModule,
    RoleModule,
    UserModule,
    //#endregion
    RouterModule.register([
      {
        path: 'auth',
        module: AuthModule
      },
      {
        path: 'current-user',
        module: CurrentUserModule
      },
      {
        path: 'monitor',
        children: [
          {
            path: 'cache',
            module: CacheModule
          },
          {
            path: 'online',
            module: OnlineModule
          },
          {
            path: 'log',
            children: [
              {
                path: 'login',
                module: LoginLogModule
              },
              {
                path: 'oper',
                module: OperLogModule
              }
            ]
          }
        ]
      },
      {
        path: 'system',
        children: [
          {
            path: 'config',
            module: ConfigModule
          },
          {
            path: 'dept',
            module: DeptModule
          },
          {
            path: 'dict',
            children: [
              {
                path: 'data',
                module: DictDataModule
              },
              {
                path: 'type',
                module: DictTypeModule
              }
            ]
          },
          {
            path: 'menu',
            module: MenuModule
          },
          {
            path: 'post',
            module: PostModule
          },
          {
            path: 'role',
            module: RoleModule
          },
          {
            path: 'user',
            module: UserModule
          }
        ]
      }
    ])
  ]
})
export class ApisModule {}
